using System;
using System.Collections.Generic;
using Microsoft.WindowsAzure.StorageClient;

namespace AzureContrib.WindowsAzure.StorageClient
{
	/// <summary>
	/// Wrapper for <see cref="ResultSegment{TElement}"/>
	/// </summary>
	public interface IResultSegment<T>
	{
		/// <summary>
		/// <see cref="ResultSegment{TElement}.BeginGetNext"/>
		/// </summary>
		IAsyncResult BeginGetNext(AsyncCallback callback, object state);

		/// <summary>
		/// <see cref="ResultSegment{TElement}.EndGetNext"/>
		/// </summary>
		IResultSegment<T> EndGetNext(IAsyncResult asyncResult);

		/// <summary>
		/// <see cref="ResultSegment{TElement}.GetNext"/>
		/// </summary>
		IResultSegment<T> GetNext();

		/// <summary>
		/// <see cref="ResultSegment{TElement}.ContinuationToken"/>
		/// </summary>
		ResultContinuation ContinuationToken { get; }

		/// <summary>
		/// <see cref="ResultSegment{TElement}.HasMoreResults"/>
		/// </summary>
		bool HasMoreResults { get; }

		/// <summary>
		/// <see cref="ResultSegment{TElement}.Results"/>
		/// </summary>
		IEnumerable<T> Results { get; }
	}
}